1. Field of the Invention
The present invention generally relates to remote booting of a diskless computing device. More particularly, the present invention relates to remote booting of a diskless computing device communicating through a pre-boot server address relay device to an address allocation server.
2. Discussion of the Related Art
Computer manufacturers have developed diskless computing devices that do not have a resident operating system in order to minimize the cost of network management. Network administration burden is minimized by centralizing copies of the operating system on a server and loading copies from the server onto the diskless computing devices. Diskless computing devices are able to operate as fully capable computers utilizing Windows 98, for example, as their operating system, by utilizing a pre-booting protocol. The pre-booting protocol is utilized to identify boot servers that allow the diskless computing devices to load the operating system from the boot servers. The diskless computing device downloads a boot image of the operating system and executes the boot image by loading the boot image in the diskless computing device's random access memory (RAM). An illustrative pre-booting protocol is the pre-boot execution (“pre-execution”) environment (PXE) protocol (PXE Specification, Version 2.1, Sep. 20, 1999, Intel). Before the diskless computing device can request the list of boot servers, it needs to obtain a network address to allow it to communicate on a network. The diskless computing device may use an address allocation protocol, such as dynamic host configuration protocol (DHCP) (DHCP, RFC 2131, March 1997, Internet Engineering Task Force), to obtain the network address.
FIG. 1 illustrates an operation of a pre-booting protocol and an address allocation protocol according to the prior art. The diskless computing device broadcasts a discovery request utilizing the address allocation protocol and includes an identifier that it is using the pre-booting protocol. An address allocation server responds, using the address allocation protocol, that it has a network address. The diskless computing device receives the packets identifying the network address and transmits a request to be assigned the network address to the address allocation server. The address allocation server responds by acknowledging the diskless computing device's request. Included in each communication are identifiers indicating that the pre-booting protocol is active. Once the network address is received, the diskless computing device then attempts to obtain the boot image utilizing the pre-boot protocol. The diskless computing device attempts to obtain a list of the available boot images by communicating with the network address indicated in the packets as the source of the packets.
If a pre-booting server is on the same computing device as the address allocation server, the pre-booting server adds indicators to the packets sent by the address allocation server identifying that the remote pre-booting protocol is active. If the pre-booting server is not on the same device as the address allocation server but both are on the same network, the pre-booting server is configured with a proxy address allocation scheme and sends “empty” address allocation protocol compliant packets. The “empty” packets contain indicators that the pre-booting protocol is active, but have no source Internet Protocol addresses. The pre-booting server knows to send “empty” packets by listening on a port for address allocation protocol messages.
If the pre-booting server is on the same machine as the address allocation server, but both are on a different network from the diskless computing device, then an address allocation relay device relays communications between the pre-booting/address allocation server and the diskless computing device. In this configuration, the pre-booting/address allocation server sends packets with indicators that the remote pre-booting protocol is active. In some cases, the networks may be separated by a communications network, e.g., the Internet.
If the pre-booting server is on a different machine than the address allocation server and both are on a different network from the diskless computing device, then the address allocation relay device may also be used to pass address allocation messages. In this configuration, the pre-booting server is configured with a proxy address allocation scheme and sends “empty” packets compliant with the address allocation protocol. The “empty” packets may contain indicators that the pre-booting protocol is active, but do not contain source IP addresses.
A problem arises, however, if the address allocation relay device and the pre-booting server are located on the same computing device. If a pre-booting server is also acting as the relay agent for the address allocation server, it currently cannot add remote booting indicators to the packets nor can it send “empty” packets with remote booting protocol indicators. Thus, the packets still have the address allocation server's network address as the packets' source network address. The diskless computing device will attempt to initiate the remote pre-booting protocol by communicating with the source of the packets, which is the address allocation server. The address allocation server has no boot image information and thus never responds. Consequently, the diskless computing device may not be able to obtain boot image information.
Accordingly, a need exists to allow a diskless computing device to be able to remotely boot even when one device is acting as both a pre-booting server and an address relay device.